﻿/**
 * Copyright 2012-2013 Mohawk College of Applied Arts and Technology
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you 
 * may not use this file except in compliance with the License. You may 
 * obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
 * License for the specific language governing permissions and limitations under 
 * the License.
 * 
 * User: fyfej
 * Date: 7-5-2012
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using MARC.HI.EHRS.SVC.Core.DataTypes;
using MARC.HI.EHRS.SVC.Core.Services;

namespace MARC.HI.EHRS.SVC.Core.Services
{
    /// <summary>
    /// Framework for classes that update record registries. A record regsitry is a system
    /// that registers document meta-data in a manner that allows it to be queried.
    /// </summary>
    public interface IDataRegistrationService : IUsesHostContext
    {

        /// <summary>
        /// Register a record with the registration service
        /// </summary>
        bool RegisterRecord(IComponent recordComponent, DataPersistenceMode mode);

        /// <summary>
        /// Query records from the registration service
        /// </summary>
        /// <param name="queryParameters">A series of parameters that represent the filter parameters</param>
        VersionedDomainIdentifier[] QueryRecord(IComponent queryParameters);

    }
}
